};
typedef struct {
+ public:
int D2;
char S3[9]; /* "GRMRECnn" */
- time_t crdate; /* creation date and time */
+ time_t crdate; /* creation date and time */
char POI[4]; /* "POI" */
char S8[3];
- char* group;
- char* category;
+ QString group;
+ QString category;
} reader_data_t;
typedef struct writer_data_s {
}
gbfread(&rdata->POI, 1, sizeof(rdata->POI) - 1, fin);
- if (strcmp(rdata->POI, "POI") != 0) {
+
+ if (strncmp(rdata->POI, "POI", 3) != 0) {
fatal(MYNAME ": Wrong or unsupported GPI file!\n");
}
#ifdef GPI_DBG
dbginfo("poi sublen = %1$d (0x%1$x)\n", len);
#endif
+ (void) len;
pos = gbftell(fin);
wpt = waypt_new();
break;
}
}
-#if NEW_STRINGS
+
if (wpt->description.isEmpty() && !wpt->notes.isEmpty()) {
wpt->description = wpt->notes;
}
if (wpt->notes.isEmpty() && !wpt->description.isEmpty()) {
wpt->notes = wpt->description;
}
-#else
- if (wpt->notes && !wpt->description) {
- wpt->description = xstrdup(wpt->notes);
- }
- if (wpt->description && !wpt->notes) {
- wpt->notes = xstrdup(wpt->description);
- }
-#endif
waypt_add(wpt);
i = gbfgetint32(fin); /* mostly 23 (0x17) */
#ifdef GPI_DBG
dbginfo("list sublen = %1$d (0x%1$x)\n", i);
+#else
+ (void) i;
#endif
(void) gbfgetint32(fin); /* max-lat */
(void) gbfgetint32(fin); /* max-lon */
subsz = gbfgetint32(fin); /* ? offset to category data ? */
#ifdef GPI_DBG
dbginfo("group sublen = %d (-> %x / %d)\n", subsz, pos + subsz + 4, pos + subsz + 4);
+#else
+ (void)subsz;
#endif
}
- if (rdata->group) {
- xfree(rdata->group); /* currently unused */
- }
rdata->group = gpi_read_string("Group");
while (gbftell(fin) < (gbsize_t)(pos + sz)) {
case 0x7:
(void) gbfgetint16(fin); /* category number */
- if (rdata->category) {
- xfree(rdata->category);
- }
rdata->category = gpi_read_string("Category");
break;
str = QString();
if (opt_descr) {
-#if NEW_STRINGS
if (!wpt->description.isEmpty()) {
-#else
- if (wpt->description && *wpt->description) {
-#endif
str = xstrdup(wpt->description);
}
} else if (opt_notes) {
-#if NEW_STRINGS
if (!wpt->notes.isEmpty()) {
-#else
- if (wpt->notes && *wpt->notes) {
-#endif
str = xstrdup(wpt->notes);
}
} else if (opt_pos) {
char cp[8];
fin = gbfopen_le(fname, "rb", MYNAME);
- rdata = (reader_data_t*) xcalloc(1, sizeof(*rdata));
+ rdata = new reader_data_t;
read_header();
static void
garmin_gpi_rd_deinit(void)
{
- if (rdata->category) {
- xfree(rdata->category);
- }
- if (rdata->group) {
- xfree(rdata->group);
- }
- xfree(rdata);
+ delete rdata;
gbfclose(fin);
}